/**
 * Created by henian.xu on 2018/10/9.
 *
 */

class HttpCommBase {
    /**
     * 创建取消令牌
     * 子类必须实现
     */
    createCancelToken() {}
    get(url, params, cfg) {
        const cancelSource = params._cancelSource || this.createCancelToken();
        // 用于取消
        cfg._cancel = cancelSource.cancel;
        // 默认:false; 不可重复发送请求
        cfg._isRepeat = params._isRepeat;
        // 默认:true; 当不可重复请求时,_isCancelBefore: true:取消之前的请求; false:取消之后的请求
        cfg._isCancelBefore = params._isCancelBefore === undefined ? true : params._isCancelBefore;
        // 默认:false; 是否自已处理错误请求，false 框架统一处理,true:框架不做任何处理
        cfg._isHandleError = params._isHandleError;
        // 默认:false; 是否自己处理成功提示, true:框架会弹出成功 message 依然会 resolve,false:框架不做任何处理
        cfg._isSuccessTip = params._isSuccessTip;

        delete params._isRepeat;
        delete params._isCancelBefore;
        delete params._isHandleError;
        delete params._isHandleSuccess;
        params._T = new Date().getTime();

        return cancelSource;
    }
    post(url, params, cfg) {
        const cancelSource = params._cancelSource || this.createCancelToken();
        // 用于取消
        cfg._cancel = cancelSource.cancel;
        cfg.cancelToken = cancelSource.token;
        // 默认:false; 不可重复发送请求
        cfg._isRepeat = params._isRepeat;
        // 默认:false(post的默认值与get的相反); 当不可重复请求时,_isCancelBefore: true:取消之前的请求; false:取消之后的请求
        cfg._isCancelBefore = params._isCancelBefore;
        // 默认:false; 是否自已处理错误请求, false:框架统一处理,true:框架不做任何处理
        cfg._isHandleError = params._isHandleError;
        // 默认:false; 是否自己处理成功提示, true:框架会弹出成功 message 依然会 resolve,false:框架不做任何处理
        cfg._isSuccessTip = params._isSuccessTip;

        delete params._isRepeat;
        delete params._isCancelBefore;
        delete params._isHandleError;
        delete params._isHandleSuccess;

        return cancelSource;
    }
}

export default HttpCommBase;
